<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" />
<meta name="generator" content="pdoc 0.9.2" />
<title>segmentation.preprocess.utils API documentation</title>
<meta name="description" content="Utils submodule contains all the needed functions to preprocess (Crop, Reshape and Label) data" />
<link rel="preload stylesheet" as="style" href="https://cdnjs.cloudflare.com/ajax/libs/10up-sanitize.css/11.0.1/sanitize.min.css" integrity="sha256-PK9q560IAAa6WVRRh76LtCaI8pjTJ2z11v0miyNNjrs=" crossorigin>
<link rel="preload stylesheet" as="style" href="https://cdnjs.cloudflare.com/ajax/libs/10up-sanitize.css/11.0.1/typography.min.css" integrity="sha256-7l/o7C8jubJiy74VsKTidCy1yBkRtiUGbVkYBylBqUg=" crossorigin>
<link rel="stylesheet preload" as="style" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.1.1/styles/github.min.css" crossorigin>
<style>:root{--highlight-color:#fe9}.flex{display:flex !important}body{line-height:1.5em}#content{padding:20px}#sidebar{padding:30px;overflow:hidden}#sidebar > *:last-child{margin-bottom:2cm}.http-server-breadcrumbs{font-size:130%;margin:0 0 15px 0}#footer{font-size:.75em;padding:5px 30px;border-top:1px solid #ddd;text-align:right}#footer p{margin:0 0 0 1em;display:inline-block}#footer p:last-child{margin-right:30px}h1,h2,h3,h4,h5{font-weight:300}h1{font-size:2.5em;line-height:1.1em}h2{font-size:1.75em;margin:1em 0 .50em 0}h3{font-size:1.4em;margin:25px 0 10px 0}h4{margin:0;font-size:105%}h1:target,h2:target,h3:target,h4:target,h5:target,h6:target{background:var(--highlight-color);padding:.2em 0}a{color:#058;text-decoration:none;transition:color .3s ease-in-out}a:hover{color:#e82}.title code{font-weight:bold}h2[id^="header-"]{margin-top:2em}.ident{color:#900}pre code{background:#f8f8f8;font-size:.8em;line-height:1.4em}code{background:#f2f2f1;padding:1px 4px;overflow-wrap:break-word}h1 code{background:transparent}pre{background:#f8f8f8;border:0;border-top:1px solid #ccc;border-bottom:1px solid #ccc;margin:1em 0;padding:1ex}#http-server-module-list{display:flex;flex-flow:column}#http-server-module-list div{display:flex}#http-server-module-list dt{min-width:10%}#http-server-module-list p{margin-top:0}.toc ul,#index{list-style-type:none;margin:0;padding:0}#index code{background:transparent}#index h3{border-bottom:1px solid #ddd}#index ul{padding:0}#index h4{margin-top:.6em;font-weight:bold}@media (min-width:200ex){#index .two-column{column-count:2}}@media (min-width:300ex){#index .two-column{column-count:3}}dl{margin-bottom:2em}dl dl:last-child{margin-bottom:4em}dd{margin:0 0 1em 3em}#header-classes + dl > dd{margin-bottom:3em}dd dd{margin-left:2em}dd p{margin:10px 0}.name{background:#eee;font-weight:bold;font-size:.85em;padding:5px 10px;display:inline-block;min-width:40%}.name:hover{background:#e0e0e0}dt:target .name{background:var(--highlight-color)}.name > span:first-child{white-space:nowrap}.name.class > span:nth-child(2){margin-left:.4em}.inherited{color:#999;border-left:5px solid #eee;padding-left:1em}.inheritance em{font-style:normal;font-weight:bold}.desc h2{font-weight:400;font-size:1.25em}.desc h3{font-size:1em}.desc dt code{background:inherit}.source summary,.git-link-div{color:#666;text-align:right;font-weight:400;font-size:.8em;text-transform:uppercase}.source summary > *{white-space:nowrap;cursor:pointer}.git-link{color:inherit;margin-left:1em}.source pre{max-height:500px;overflow:auto;margin:0}.source pre code{font-size:12px;overflow:visible}.hlist{list-style:none}.hlist li{display:inline}.hlist li:after{content:',\2002'}.hlist li:last-child:after{content:none}.hlist .hlist{display:inline;padding-left:1em}img{max-width:100%}td{padding:0 .5em}.admonition{padding:.1em .5em;margin-bottom:1em}.admonition-title{font-weight:bold}.admonition.note,.admonition.info,.admonition.important{background:#aef}.admonition.todo,.admonition.versionadded,.admonition.tip,.admonition.hint{background:#dfd}.admonition.warning,.admonition.versionchanged,.admonition.deprecated{background:#fd4}.admonition.error,.admonition.danger,.admonition.caution{background:lightpink}</style>
<style media="screen and (min-width: 700px)">@media screen and (min-width:700px){#sidebar{width:30%;height:100vh;overflow:auto;position:sticky;top:0}#content{width:70%;max-width:100ch;padding:3em 4em;border-left:1px solid #ddd}pre code{font-size:1em}.item .name{font-size:1em}main{display:flex;flex-direction:row-reverse;justify-content:flex-end}.toc ul ul,#index ul{padding-left:1.5em}.toc > ul > li{margin-top:.5em}}</style>
<style media="print">@media print{#sidebar h1{page-break-before:always}.source{display:none}}@media print{*{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a[href]:after{content:" (" attr(href) ")";font-size:90%}a[href][title]:after{content:none}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:0.5cm}p,h2,h3{orphans:3;widows:3}h1,h2,h3,h4,h5,h6{page-break-after:avoid}}</style>
<script async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-AMS_CHTML" integrity="sha256-kZafAc6mZvK3W3v1pHOcUix30OHQN6pU/NO2oFkqZVw=" crossorigin></script>
<script defer src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.1.1/highlight.min.js" integrity="sha256-Uv3H6lx7dJmRfRvH8TH6kJD1TSK1aFcwgx+mdg3epi8=" crossorigin></script>
<script>window.addEventListener('DOMContentLoaded', () => hljs.initHighlighting())</script>
</head>
<body>
<main>
<article id="content">
<header>
<h1 class="title">Module <code>segmentation.preprocess.utils</code></h1>
</header>
<section id="section-intro">
<p>Utils submodule contains all the needed functions to preprocess (Crop, Reshape and Label) data</p>
</section>
<section>
</section>
<section>
</section>
<section>
<h2 class="section-title" id="header-functions">Functions</h2>
<dl>
<dt id="segmentation.preprocess.utils.compareLabels"><code class="name flex">
<span>def <span class="ident">compareLabels</span></span>(<span>)</span>
</code></dt>
<dd>
<div class="desc"><p>Load nii files of labels created from matlab and Python and compare them computing Dice coefficient.</p></div>
</dd>
<dt id="segmentation.preprocess.utils.cropVolume"><code class="name flex">
<span>def <span class="ident">cropVolume</span></span>(<span>Volume, deltaNumberofSlices, minValue, maxValue, indexCoord, indexVolume)</span>
</code></dt>
<dd>
<div class="desc"><p>Crop slices in excess along x, y and z directions to reduce the amount of data to be stored.</p>
<h2 id="args">Args</h2>
<dl>
<dt>VolumeStruct data format containing 3D volumetric data and metadata.</dt>
<dt><strong><code>deltaNumberofSlices</code></strong></dt>
<dd>number of empty slices to keep as margin.</dd>
<dt><strong><code>minValue</code></strong></dt>
<dd>minimum coordinate value extracted from stl file, to compute how many slices to crop at the bottom.</dd>
<dt><strong><code>maxValue</code></strong></dt>
<dd>maximum coordinate value extracted from stl file, to compute how many slices to crop at the top.</dd>
<dt><strong><code>indexCoord</code></strong></dt>
<dd>index that goes along coordinates (x,y,z)</dd>
<dt><strong><code>indexVolume</code></strong></dt>
<dd>index that goes along arrays (rows, columns, slices)</dd>
</dl>
<h2 id="returns">Returns</h2>
<dl>
<dt><code>CropVolume</code></dt>
<dd>cropped VolumeStruct data format.</dd>
</dl></div>
</dd>
<dt id="segmentation.preprocess.utils.dice_coeff"><code class="name flex">
<span>def <span class="ident">dice_coeff</span></span>(<span>pyLabel, outSet)</span>
</code></dt>
<dd>
<div class="desc"><p>Function created to compare Pyhton-created and Matlab-created labels. .mat files of binary masks for at least
one case are needed to be stored. Use not recommended!</p></div>
</dd>
<dt id="segmentation.preprocess.utils.getMetadata"><code class="name flex">
<span>def <span class="ident">getMetadata</span></span>(<span>dicomDir)</span>
</code></dt>
<dd>
<div class="desc"><p>Get slope, intercept and slice location from dicom files. They are not accessible through nibabel function
nib.load. Function is called by loadNiiVolume.</p>
<h2 id="args">Args</h2>
<dl>
<dt><strong><code>dicomDir</code></strong></dt>
<dd>directory containing dicom files.</dd>
</dl>
<h2 id="returns">Returns</h2>
<dl>
<dt><code>rescaleSlope</code></dt>
<dd>Slope</dd>
<dt><code>rescaleIntercept</code></dt>
<dd>Intercept</dd>
<dt><code>sliceLocation</code></dt>
<dd>slice Location</dd>
<dt><code>bitStored</code></dt>
<dd>data storage</dd>
</dl></div>
</dd>
<dt id="segmentation.preprocess.utils.loadDicomVolume"><code class="name flex">
<span>def <span class="ident">loadDicomVolume</span></span>(<span>VolumeDir)</span>
</code></dt>
<dd>
<div class="desc"><p>Loads dicom slices, extract metadata and stores the slices in VolumeStruct data format.</p>
<h2 id="args">Args</h2>
<dl>
<dt><strong><code>VolumeDir</code></strong></dt>
<dd>durectory containing dicom files</dd>
</dl>
<h2 id="returns">Returns</h2>
<p>VolumeStruct data format containing 3D volumetric data and metadata.</p></div>
</dd>
<dt id="segmentation.preprocess.utils.loadNiiVolume"><code class="name flex">
<span>def <span class="ident">loadNiiVolume</span></span>(<span>volumeDir, dicomDir)</span>
</code></dt>
<dd>
<div class="desc"><p>Loads nii data and stores it, together with metadata. Directory containing dicom data is also needed in order to
recover rescaleSlope, rescaleIntercept, sloceLocation and bitStored metdata which are not read by nibabel nib.load
function.</p>
<h2 id="args">Args</h2>
<dl>
<dt><strong><code>volumeDir</code></strong></dt>
<dd>directory containing file .nii to be loaded.</dd>
<dt><strong><code>dicomDir</code></strong></dt>
<dd>directory containing dicom files.</dd>
</dl>
<h2 id="returns">Returns</h2>
<p>VolumeStruct data format containing 3D volumetric data and metadata.</p></div>
</dd>
<dt id="segmentation.preprocess.utils.loadNiiVolume1"><code class="name flex">
<span>def <span class="ident">loadNiiVolume1</span></span>(<span>volumeDir)</span>
</code></dt>
<dd>
<div class="desc"><p>Loads nii data and stores it, together with metadata. Function to be used to avoid passing of dicom files
directory. As a consequence, rescaleSlope, rescaleIntercept, sliceLocation and bitStored are missing.
Function created just to make trials and load nii data more quickly. Use is not recommended!</p>
<h2 id="args">Args</h2>
<dl>
<dt><strong><code>volumeDir</code></strong></dt>
<dd>directory containing file .nii to be loaded.</dd>
</dl>
<h2 id="returns">Returns</h2>
<p>VolumeStruct data format containing 3D volumetric data and metadata.</p></div>
</dd>
<dt id="segmentation.preprocess.utils.mesh2vol"><code class="name flex">
<span>def <span class="ident">mesh2vol</span></span>(<span>mesh, volumeOffset, voxelSize, volumeDim)</span>
</code></dt>
<dd>
<div class="desc"><p>Creates a list of 2D contours by slicing a 3 dimensional mesh with planes that are orthogonal to z direction.</p>
<h2 id="args">Args</h2>
<dl>
<dt><strong><code>mesh</code></strong></dt>
<dd>3d mesh loaded from stl file with thrimesh library.</dd>
<dt><strong><code>volumeoffset</code></strong></dt>
<dd>tuple containing values of offsets along x,y and z directions.</dd>
<dt><strong><code>voxelSize</code></strong></dt>
<dd>tuple containing dimensions of voxels along x,y and z directions.</dd>
<dt><strong><code>volumeDim</code></strong></dt>
<dd>tuple containing number of voxels along x,y and z directions.</dd>
</dl>
<h2 id="returns">Returns</h2>
<dl>
<dt><code>contours</code></dt>
<dd>list of arrays containing x, y and z coordinates of contour points at different z positions. If no
intersection is found at height z0, contours[z0] = []</dd>
</dl></div>
</dd>
<dt id="segmentation.preprocess.utils.normVolumeScan"><code class="name flex">
<span>def <span class="ident">normVolumeScan</span></span>(<span>VolumeIn)</span>
</code></dt>
<dd>
<div class="desc"><p>Normalizes pixel values in the input depending on their original storage format.</p>
<h2 id="args">Args</h2>
<dl>
<dt><strong><code>VolumeIn</code></strong></dt>
<dd>VolumeStruct data format containing 3D volumetric data and metadata.</dd>
</dl>
<h2 id="returns">Returns</h2>
<dl>
<dt><code>VolumeOut</code></dt>
<dd>normalized pixel values</dd>
</dl></div>
</dd>
<dt id="segmentation.preprocess.utils.resampleVolumeScan"><code class="name flex">
<span>def <span class="ident">resampleVolumeScan</span></span>(<span>VolumeIn, resample)</span>
</code></dt>
<dd>
<div class="desc"><p>Resample 3D data to the desired dimension.</p>
<h2 id="args">Args</h2>
<dl>
<dt><strong><code>VolumeIn</code></strong></dt>
<dd>VolumeStruct data format containing 3D volumetric data and metadata.</dd>
<dt><strong><code>resample</code></strong></dt>
<dd>3 dimensional tuple specifying desired dimension for output 3D data</dd>
</dl>
<h2 id="returns">Returns</h2>
<dl>
<dt><code>VolumeOut</code></dt>
<dd>resampled VolumeStruct data format to desired dimensions.</dd>
</dl></div>
</dd>
<dt id="segmentation.preprocess.utils.setDirVariables"><code class="name flex">
<span>def <span class="ident">setDirVariables</span></span>(<span>)</span>
</code></dt>
<dd>
<div class="desc"><p>Definitions of all the needed directories where data has to be stored</p></div>
</dd>
</dl>
</section>
<section>
<h2 class="section-title" id="header-classes">Classes</h2>
<dl>
<dt id="segmentation.preprocess.utils.IndexTracker"><code class="flex name class">
<span>class <span class="ident">IndexTracker</span></span>
<span>(</span><span>ax, X)</span>
</code></dt>
<dd>
<div class="desc"><p>To plot and scroll slices of 3D volumetric data</p></div>
<h3>Methods</h3>
<dl>
<dt id="segmentation.preprocess.utils.IndexTracker.onscroll"><code class="name flex">
<span>def <span class="ident">onscroll</span></span>(<span>self, event)</span>
</code></dt>
<dd>
<div class="desc"></div>
</dd>
<dt id="segmentation.preprocess.utils.IndexTracker.update"><code class="name flex">
<span>def <span class="ident">update</span></span>(<span>self)</span>
</code></dt>
<dd>
<div class="desc"></div>
</dd>
</dl>
</dd>
<dt id="segmentation.preprocess.utils.VolumeStruct"><code class="flex name class">
<span>class <span class="ident">VolumeStruct</span></span>
<span>(</span><span>data, voxelSize, volumeDim, volumeOffset, bitStored, rescaleIntercept, rescaleSlope, sliceLocation)</span>
</code></dt>
<dd>
<div class="desc"><p>Volumetric data structure to be stored in nii format</p></div>
</dd>
</dl>
</section>
</article>
<nav id="sidebar">
<h1>Index</h1>
<div class="toc">
<ul></ul>
</div>
<ul id="index">
<li><h3>Super-module</h3>
<ul>
<li><code><a title="segmentation.preprocess" href="index.html">segmentation.preprocess</a></code></li>
</ul>
</li>
<li><h3><a href="#header-functions">Functions</a></h3>
<ul class="two-column">
<li><code><a title="segmentation.preprocess.utils.compareLabels" href="#segmentation.preprocess.utils.compareLabels">compareLabels</a></code></li>
<li><code><a title="segmentation.preprocess.utils.cropVolume" href="#segmentation.preprocess.utils.cropVolume">cropVolume</a></code></li>
<li><code><a title="segmentation.preprocess.utils.dice_coeff" href="#segmentation.preprocess.utils.dice_coeff">dice_coeff</a></code></li>
<li><code><a title="segmentation.preprocess.utils.getMetadata" href="#segmentation.preprocess.utils.getMetadata">getMetadata</a></code></li>
<li><code><a title="segmentation.preprocess.utils.loadDicomVolume" href="#segmentation.preprocess.utils.loadDicomVolume">loadDicomVolume</a></code></li>
<li><code><a title="segmentation.preprocess.utils.loadNiiVolume" href="#segmentation.preprocess.utils.loadNiiVolume">loadNiiVolume</a></code></li>
<li><code><a title="segmentation.preprocess.utils.loadNiiVolume1" href="#segmentation.preprocess.utils.loadNiiVolume1">loadNiiVolume1</a></code></li>
<li><code><a title="segmentation.preprocess.utils.mesh2vol" href="#segmentation.preprocess.utils.mesh2vol">mesh2vol</a></code></li>
<li><code><a title="segmentation.preprocess.utils.normVolumeScan" href="#segmentation.preprocess.utils.normVolumeScan">normVolumeScan</a></code></li>
<li><code><a title="segmentation.preprocess.utils.resampleVolumeScan" href="#segmentation.preprocess.utils.resampleVolumeScan">resampleVolumeScan</a></code></li>
<li><code><a title="segmentation.preprocess.utils.setDirVariables" href="#segmentation.preprocess.utils.setDirVariables">setDirVariables</a></code></li>
</ul>
</li>
<li><h3><a href="#header-classes">Classes</a></h3>
<ul>
<li>
<h4><code><a title="segmentation.preprocess.utils.IndexTracker" href="#segmentation.preprocess.utils.IndexTracker">IndexTracker</a></code></h4>
<ul class="">
<li><code><a title="segmentation.preprocess.utils.IndexTracker.onscroll" href="#segmentation.preprocess.utils.IndexTracker.onscroll">onscroll</a></code></li>
<li><code><a title="segmentation.preprocess.utils.IndexTracker.update" href="#segmentation.preprocess.utils.IndexTracker.update">update</a></code></li>
</ul>
</li>
<li>
<h4><code><a title="segmentation.preprocess.utils.VolumeStruct" href="#segmentation.preprocess.utils.VolumeStruct">VolumeStruct</a></code></h4>
</li>
</ul>
</li>
</ul>
</nav>
</main>
<footer id="footer">
<p>Generated by <a href="https://pdoc3.github.io/pdoc"><cite>pdoc</cite> 0.9.2</a>.</p>
</footer>
</body>
</html>